package main

// 最基础的
func BubbleSort(nums []int) {
	n := len(nums)
	for i := 0; i < n; i++ {
		// 每次循环找到一个最大的数， 浮到最上层~
		for j := 1; j < n-i; j++ {
			if j != 0 && nums[j] < nums[j-1] {
				nums[j], nums[j-1] = nums[j-1], nums[j]
			}
		}
	}
}

// 升级版， 应对已经排好序的情况，不需要进行冒泡了
func plusBubbleSort(nums []int) {
	n := len(nums)
	// 如果上一轮没有发生交换， 直接结束
	flag := false
	for i := 0; i < n; i++ {
		if flag {
			break
		}
		flag = true
		// 每次循环找到一个最大的数， 浮到最上层~
		for j := 1; j < n-i; j++ {
			if j != 0 && nums[j] < nums[j-1] {
				nums[j], nums[j-1] = nums[j-1], nums[j]
				flag = false
			}
		}
	}
}
